1
|
|
|
class NotifierError extends Error { |
2
|
|
|
constructor(type, context, originalError) { |
3
|
6 |
|
super(type.message(context)); |
4
|
6 |
|
this.name = 'NotifierError'; |
5
|
6 |
|
this.type = type.type; |
6
|
6 |
|
this.errorCode = type.code; |
7
|
6 |
|
this.message = type.message(context); |
8
|
6 |
|
this.serverMessage = this.message; |
9
|
6 |
|
this.statusCode = Math.floor(this.errorCode / 1000); |
10
|
6 |
|
if (originalError) { |
11
|
|
|
this.originalError = originalError; |
12
|
|
|
this.serverMessage = `${this.message}: ${this.originalError.message}`; |
13
|
|
|
} |
14
|
|
|
} |
15
|
|
|
} |
16
|
|
|
|
17
|
4 |
|
NotifierError.Types = Object.freeze({ |
18
|
|
|
BAD_REQUEST: { code: 400000, message: () => '잘못된 요청입니다.' }, |
19
|
3 |
|
BAD_REQUEST_INVALID: { code: 400100, message: context => `요청이 유효하지 않습니다: ${context.message}` }, |
20
|
|
|
AUTH: { code: 401000, message: () => '로그인이 실패하였습니다.' }, |
21
|
|
|
AUTH_TOKEN: { code: 401100, message: () => '인증 토큰에 문제가 있습니다.' }, |
22
|
|
|
AUTH_TOKEN_INVALID: { code: 401110, message: () => '인증 토큰이 유효하지 않습니다.' }, |
23
|
|
|
AUTH_TOKEN_EXPIRED: { code: 401120, message: () => '인증 토큰이 만료되었습니다.' }, |
24
|
|
|
AUTH_USER: { code: 401200, message: () => '사용자 인증에 문제가 발생했습니다.' }, |
25
|
|
|
AUTH_USER_NOT_EXIST: { code: 401210, message: context => `${context.username}은 존재하지 않는 사용자 입니다.` }, |
26
|
|
|
AUTH_MISSING_PARAMS: { code: 401220, message: () => '사용자 이름 또는 패스워드를 입력하지 않았습니다.' }, |
27
|
2 |
|
AUTH_INVALID_PARAMS: { code: 401230, message: () => '사용자 이름 또는 패스워드가 맞지 않습니다.' }, |
28
|
|
|
FORBIDDEN: { code: 403000, message: () => '허가되지 않았습니다.' }, |
29
|
|
|
FORBIDDEN_IP_ADDRESS: { code: 403100, message: context => `사용자의 IP(${context.remoteAddress})는 허가되지 않았습니다.` }, |
30
|
|
|
FORBIDDEN_OPERATION: { code: 403200, message: () => '허가되지 않은 작업입니다.' }, |
31
|
|
|
INVALID_PARAMS: { code: 400000, message: () => '파라미터가 잘못되었습니다.' }, |
32
|
8 |
|
CONFLICT: { code: 409000, message: context => `${context.value}는 이미 존재하는 값입니다. 다른 값을 입력해 주세요.` }, |
33
|
|
|
SERVER: { code: 500000, message: context => `서버 에러가 발생했습니다${context.message ? `: ${context.message}` : '.'}` }, |
34
|
|
|
DB: { code: 500100, message: () => 'DB 에러가 발생했습니다.' }, |
35
|
|
|
}); |
36
|
|
|
|
37
|
4 |
|
Object.keys(NotifierError.Types).forEach((type) => { |
38
|
68 |
|
NotifierError.Types[type].type = type; |
39
|
|
|
}); |
40
|
|
|
|
41
|
|
|
module.exports = NotifierError; |
42
|
|
|
|